public class Test {
    /*
    finally
        和 try catch 并列的语句块
            try{
                //一些逻辑
                //执行完毕后 ， 可能要释放一些资源
                //很有可能在释放资源前就出现异常 或者出现 return ，是资源无法释放
                //finally 就可以解决上述问题
            }catch(){

            }finally{
                无论如何 finally 都能够确保执行
            }

            try{

            } finally{

            }

         执行顺序
            trow 出异常 ， try 后续的代码不再执行 ， 进入匹配的 catch 在最后再执行 finally
            多个 catch的匹配规则 ， 从上到下，子类异常能够被父类异常捕获到
     */
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        try{
            if(a<b){
                //抛出异常
                throw new Exception("a<b");
            }

            release();
        }catch(Exception e){
            //捕获异常
            e.printStackTrace();
        } finally{
            release();
        }
    }
    //释放资源

    private static void release(){
        System.out.println("释放空间");
    }

}